/*
 * @Author: ailin
 * @Date: 2022-07-12 11:34:58
 * @LastEditors: ailin
 * @LastEditTime: 2023-07-27 09:17:40
 * @Description: file content
 * @FilePath: /pay_platform/src/request/jsonp.js
 */
import originJSONP from "fetch-jsonp"

import { showLoading, hideLoading } from "@/request/loading.js"
// import { Toast } from "vant"
/**
 * 拼接参数
 *
 * @param {object} data
 * @returns
 */
const param = (data) => {
  let url = ""
  for (var k in data) {
    let value = data[k] !== undefined ? data[k] : ""
    url += `&${k}=${encodeURIComponent(value)}`
  }
  return url ? url.substring(1) : ""
}

/**
 * 封装jsonp
 *
 * @param {string} url              请求url
 * @param {object} [data=null]      请求参数
 * @param {object} option           jsonp的option
 * @param {object} type            默认0 vps接口 判断不同接口调用; 1 -> api接口; 2 -> service接口
 * @returns
 */

const Jsonp = (url, data = null, val, option) => {
  console.log("=======jsonp", url)
  showLoading()
  let query = "" // 默认传递参数
  // 判断是否要带参数
  if (data && Object.keys(data).length) {
    query += "&"
    query += param(data)
    query = query.replace(/&/, "?")
  }
  url += query
  // 后端约定的jsoncallback（回调函数名称）
  option = Object.assign(
    {},
    {
      // jsonpCallback: option || 'jsoncallback',
      jsonpCallback: option || "jsoncallback",
      timeout: 8000,
      jsonpCallbackFunction: val || ""
    },
    option
  )
  // 这里返回一个promise对象
  return originJSONP(url, option).then(
    // 成功返回数据
    (res) => {
      hideLoading()
      return res.json()
    },
    // 请求发生错误或超时
    () => {
      hideLoading()
      // Toast({
      //   mes: "请求服务失败！"
      // })
    }
  )
}

export default Jsonp
